/**
 * 登录成功后,获得用户的基本信息,然后保存到浏览器的session里面,当会话结束,信息删除
 */

import { SessionStorage } from '@/store/SessionStorageCenter.js';

// 遮罩层组件
import { Loading } from 'element-ui';

class userBaseInfo {

    /**
     * 设置用户ID
     */
    static setUserId(userId) {
        return SessionStorage.setStorage('userId', userId);
    }

    /**
     * 获得用户ID
     */
    static getUserId() {
        return SessionStorage.getStorage('userId');
    }

    /**
     * 设置登录账号
     */
    static setLoginName(loginName) {
        return SessionStorage.setStorage('loginName', loginName);
    }

    /**
     * 获得登录账号
     */
    static getLoginName() {
        return SessionStorage.getStorage('loginName');
    }

    /**
     * 设置登录用户真实名称
     */
    static setUserName(userName) {
        return SessionStorage.setStorage('userName', userName);
    }

    /**
     * 获得登录用户真实名称
     */
    static getUserName() {
        return SessionStorage.getStorage('userName');
    }

    /**
     * 设置用户邮件
     */
    static setEmail(email) {
        return SessionStorage.setStorage('email', email);
    }

    /**
     * 获得用户邮件
     */
    static getEmail() {
        return SessionStorage.getStorage('email');
    }

    /**
     * 设置用户电话
     */
    static setPhone(phone) {
        return SessionStorage.setStorage('phone', phone);
    }

    /**
     * 获得用户电话
     */
    static getPhone() {
        return SessionStorage.getStorage('phone');
    }

    /**
     * 设置用户角色名称
     */
    static setRoleName(roleName) {
        return SessionStorage.setStorage('roleName', roleName);
    }

    /**
     * 获得用户角色名称
     */
    static getRoleName() {
        return SessionStorage.getStorage('roleName');
    }

    /**
     * 设置用户功能菜单列表
     */
    static setRolePermission(rolePermission) {
        return SessionStorage.setStorage('rolePermission', rolePermission);
    }

    /**
     * 获得用户功能菜单列表
     */
    static getRolePermission() {
        return SessionStorage.getStorage('rolePermission');
    }

    /**
     * 设置用户是否超级用户
     */
    static setIsSuperAdmin(isSuperAdmin) {
        return SessionStorage.setStorage('isSuperAdmin', isSuperAdmin);
    }

    /**
     * 获得用户是否超级用户
     */
    static getIsSuperAdmin() {
        return SessionStorage.getStorage('isSuperAdmin');
    }

    

    static loadingInstance = null;

    /**
     * 全局遮罩层的方法
     */
    static loadDom(domObject) {
        this.loadingInstance = Loading.service({ target: domObject });

    }

    static unloadDom() {
        if (this.loadingInstance != null) {
            this.loadingInstance.close();
        }
    }

    /**
     * 设置应用对象到浏览器缓存
     */
    static setOperObjectName(operObjectName) {
        return SessionStorage.setStorage('operObjectName', operObjectName);
    }

    /**
     * 在浏览器缓存中得到,当前应用对象
     */
    static getOperObjectName() {
        return SessionStorage.getStorage('operObjectName');
    }


    static strToHexCharCode(str) {
        var r='';
        for (var i = 0; i < str.length; i++) {
            r+='\\u'+str.charCodeAt(i).toString(16);
        }
        return r;
    };

    /**
     * 头部功能:设置当前选择的团队
     */
    static setCurrentSelectedTeam(currentSelectedTeam) {
        return SessionStorage.setStorage('currentSelectedTeam', currentSelectedTeam);
    };

    /**
     * 头部功能:获取当前选择的团队
     */
    static getCurrentSelectedTeam() {
        return SessionStorage.getStorage('currentSelectedTeam');
    };

    /**
     * 头部功能:将当前选择的空间设置到缓存中
     */
    static setCurrentSelectedNamespace(currentSelectedNamespace) {
        return SessionStorage.setStorage('currentSelectedNamespace', currentSelectedNamespace);
    }

    /**
     * 头部功能:获取当前选择的空间
     */
    static getCurrentSelectedNamespace() {
        return SessionStorage.getStorage('currentSelectedNamespace');
    }




    /**
     * 退出登录时候,将用户信息设置为空
     */
    static cleanUserBase() {
        this.setUserId('');
        this.setLoginName('');
        this.setPhone('');
        this.setRoleName('');
        this.setRolePermission('');
        this.setIsSuperAdmin('');
        this.setEmail('');
        this.setUserName('');
        this.setCurrentSelectedTeam('');
        this.setCurrentSelectedNamespace('');
    }

}

export {
    userBaseInfo
};






